/**
 * goal
 *
 * outlook@China software studio
 * Copyright (c) 2008-2010. All Rights Reserved.
 * http://www.outlook.com
 */

package org.outlook.commons.ui;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;

/**
 * function:
 * 
 * @author Watson email: watson.wu@hotmail.com
 * @date 2010
 */
public class RightClickPopupMenu extends JFrame {
	private static final long serialVersionUID = 1L;
	JPopupMenu menu = new JPopupMenu("Popup");

	class MyLabel extends JLabel {
		private static final long serialVersionUID = 1L;

		public MyLabel(String text) {
			super(text);
			addMouseListener(new PopupTriggerListener());
		}

		class PopupTriggerListener extends MouseAdapter {
			public void mousePressed(MouseEvent ev) {
				if (ev.isPopupTrigger()) {
					menu.show(ev.getComponent(), ev.getX(), ev.getY());
				}
			}

			public void mouseReleased(MouseEvent ev) {
				if (ev.isPopupTrigger()) {
					menu.show(ev.getComponent(), ev.getX(), ev.getY());
				}
			}

			public void mouseClicked(MouseEvent ev) {
			}
		}
	}

	JLabel label = new MyLabel("right-click");

	public RightClickPopupMenu() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		JMenuItem item = new JMenuItem("Test1");
		item.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				System.out.println("Menu item Test1");
			}
		});
		menu.add(item);

		item = new JMenuItem("Test2");
		item.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				System.out.println("Menu item Test2");
			}
		});
		menu.add(item);

		getContentPane().add(label);
		pack();
		setSize(300, 100);
	}

	public static void main(String[] args) {
		new RightClickPopupMenu().setVisible(true);
	}
}